home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 06 - 1990 / 06.06 Jun 90 / Timing Files / Timer.DEF < prev    next >
Encoding:
Text File  |  1989-02-07  |  1.8 KB  |  63 lines  |  [TEXT/MPS ]

  1. %FOREIGN DEFINITION MODULE Timer;
  2.  
  3. (*
  4.  *        Timer mit Auflösung von 1.3 µs
  5.  *        
  6.  *        Version 1 / O. Maquelin / 5-Jan-89
  7.  *        
  8.  *        
  9.  *        *** Nur für Macintosh II ****
  10.  *        
  11.  *        
  12.  *        Dieses Modul erlaubt Zeitmessungen mit einer Auflösung von 1.3 µs. Zur
  13.  *        Zeitbestimmung werden die globale Variable Ticks und der VIA Baustein,
  14.  *        der die dazugehörigen Interrupts generiert, gelesen. Die Ausführungszeit
  15.  *        der Prozeduren StartTimer und StopTimer beträgt etwa 35 µs (damit diese
  16.  *        Zeit möglichst wenig variiert, wird der Cache innerhalb dieser
  17.  *        Prozeduren ausgeschaltet).
  18.  *        
  19.  *        Die gemessenen Zeiten werden durch 64 Bit breite Zahlen dargestellt, und
  20.  *        geben die Anzahl Zyklen seit dem letzten Einschalten der Maschine an.
  21.  *        Die Variable MsPerClock enthält den genauen Umrechnungsfaktor von Zyklen
  22.  *        in Millisekunden (1.2766E-3).
  23.  *        
  24.  *        Die Ausführungszeit der Prozeduren StartTimer und StopTimer wird bei
  25.  *        der Zeitmessung automatisch berücksichtigt. Die Variable Compensation
  26.  *        enthält die Anzahl Zyklen, die für jeden Aufruf von der gemessenen
  27.  *        Zeitdifferenz abgezogen werden (27). Die Kompensation kann ausgeschaltet
  28.  *        werden, indem dieser Wert nullgesetzt wird.
  29.  *)
  30.  
  31.  
  32. TYPE    TimeRec = RECORD hi, lo: LONGCARD END;
  33.  
  34.  
  35. VAR        MsPerClock: LONGREAL;
  36.         
  37.         Compensation: LONGCARD;
  38.         
  39.         totComp: TimeRec;
  40.  
  41.  
  42. PROCEDURE InitTimer %PASCAL (VAR t: TimeRec);
  43.  
  44. (* Timer initialisieren (hi = lo = 0) *)
  45.  
  46.  
  47. PROCEDURE StartTimer %PASCAL (VAR t: TimeRec);
  48.  
  49. (* Timer starten (Die momentane Zeit wird vom Inhalt des Timers subtrahiert) *)
  50.  
  51.  
  52. PROCEDURE StopTimer %PASCAL (VAR t: TimeRec);
  53.  
  54. (* Timer stoppen (Die momentane Zeit wird zum Inhalt des Timers addiert) *)
  55.  
  56.  
  57. PROCEDURE MsValue %PASCAL (VAR t: TimeRec): LONGREAL;
  58.  
  59. (* Wert des Timers in Millisekunden (Anzahl Zyklen * MsPerClock) *)
  60.  
  61.  
  62. END Timer.
  63.